﻿using AutoMapper;
using Step4.Unit4.AutoMapModels;
using Step4.Unit4.Models;

namespace Step4.Unit4.Profiles
{
    public class ProductProfile:Profile
    {
        //在构造函数里做创建映射关系
        public ProductProfile() 
        {
            // 专门配置命名没有规律，且名字又不一样的属性，需要这样手动配置
            CreateMap<UserInfo2_1, UserInfoTo_2_1>()
                .ForMember(dest => dest.UserId, opt => opt.MapFrom(souce => souce.Id))
                .ForMember(dest => dest.UserName, opt => opt.MapFrom(source => source.NickName))
                .ForMember(dest => dest.Gender, opt => opt.MapFrom(source => source.Sex))
                .ReverseMap(); // 直接映射反转，(正着，反着都能进行映射)

            CreateMap<Product2_2, ProductTo2_2>().ReverseMap();// 映射反转,(正着，反着都能进行映射)


            /*
             如果"用子类对象实例化父类(肯定包含父类不具备的'专有属性')"，
             想将父类对象映射成为另一个父类，"子类之间必须创建映射，同事父类创建映射时，要指定包含子类映射，对象中的专有属性才能被正确映射！！"
            */
            CreateMap<ChildSource, ChildTo>();
            CreateMap<ParentSource, ParentTo>().Include<ChildSource, ChildTo>();
            // 包含所有的子类映射
            //CreateMap<ParentSource, ParentTo>().IncludeAllDerived(); 
        }
    }
}
